3 solutions

  • 0
    @ 2026-11-6 21:27:35
    #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
      @ 2026-11-6 21:19:20
      #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
        @ 2026-11-6 21:18:56
        #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