3 solutions
-
0
#include<bits/stdc++.h> #define int long long using namespace std; const int N=2e5+10; struct node{ int s; char c; }a[N]; int n; signed main() { cin>>n; for(int i=1;i<=n;i++){ cin>>a[i].s>>a[i].c; } int l=1,r=n,t1=0,t2=0; int ans=0; while(true){ int x,y; x=a[l].s-t1; y=a[r].s-t2; int minv=min(x,y); if(l>=r){ break; } if(a[l].c!=a[r].c){ ans+=minv; } if(x<y){ l++,t1=0; t2+=minv; } else if(x>y){ r--,t2=0; t1+=minv; } else{ l++,r--; t1=t2=0; } } cout<<ans; return 0; } -
0
#include<bits/stdc++.h> using namespace std; #define ll long long const int N = 2e5+5; struct node { ll a; char c; //a琛ㄧず涓暟,c琛ㄧず瀛楃 } s[N]; ll n; int main() { // freopen("string.in", "r", stdin); // freopen("string.out", "w", stdout); cin >> n; for (int i = 1; i <= n; i++) { cin >> s[i].a >> s[i].c; } ll i = 1, j = n; ll t1 = 0, t2 = 0; ll ans = 0; while (true) { if (i >= j) break; ll p1, p2; p1 = s[i].a - t1, p2 = s[j].a - t2; ll minv = min(p1, p2); bool b = (s[i].c == s[j].c); if (!b) { ans += minv; } if (p1 < p2) { i++; t1 = 0; t2 += minv; } else if (p1 > p2) { j--; t2 = 0; t1 += minv; } else { i++, j--; t1 = 0, t2 = 0; } } cout << ans; return 0; } -
0
#include<bits/stdc++.h> using namespace std; #define ll long long const int N = 2e5+5; struct node { ll a; char c; //a琛ㄧず涓暟,c琛ㄧず瀛楃 } s[N]; ll n; int main() { // freopen("string.in", "r", stdin); // freopen("string.out", "w", stdout); cin >> n; for (int i = 1; i <= n; i++) { cin >> s[i].a >> s[i].c; } ll i = 1, j = n; ll t1 = 0, t2 = 0; ll ans = 0; while (true) { if (i == j) break; ll p1, p2; p1 = s[i].a - t1, p2 = s[j].a - t2; ll minv = min(p1, p2); bool b = (s[i].c == s[j].c); if (!b) { ans += minv; } if (p1 < p2) { i++; t1 = 0; t2 += minv; } else if (p1 > p2) { j--; t2 = 0; t2 += minv; } else { i++, j++; t1 = 0, t2 = 0; } } cout << ans; return 0; }
- 1
Information
- ID
- 3615
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 10
- Tags
- (None)
- # Submissions
- 5
- Accepted
- 2
- Uploaded By