Submission #1319290

#TimeUsernameProblemLanguageResultExecution timeMemory
1319290WH8Bliskost (COI23_bliskost)C++17
57 / 100
1095 ms18952 KiB
#include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; #include <bits/stdc++.h> using namespace std; #define int long long #define pll pair<long long, long long> #define mp make_pair #define pb push_back #define f first #define s second #define endl '\n' #define ld long double #define sz(x) static_cast<int>((x).size()) #define i5 tuple<int,int,int,int,int> #define all(x) x.begin(), x.end() #define iiii tuple<int, int,int,int> #define ld long double #define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update> signed main(){ int n,q;cin>>n>>q; vector<int> a(n+2, 0), b(n+2, 0); for(int i=1;i<=n;i++){ char c;cin>>c; a[i]=c-'a'+1; } for(int i=1;i<=n;i++){ char c;cin>>c; b[i]=c-'a'+1; } array<int,2> sum{0, 0}; auto ev=[&](int i)->int{ int ret=b[i+1]-b[i]-(a[i+1]-a[i]); //printf("ev %lld is %lld\n", i, ret); return ret; }; for(int i=0;i<=n;i++){ sum[i%2] += ev(i); for(int l=0;l<2;l++)while(sum[l] < 0)sum[l]+=26; } if(sum[0]%26==0 and sum[1]%26==0) cout<<"da\n"; else cout<<"ne\n"; for(int i=0;i<q;i++){ int p, nv;cin>>p; char c;cin>>c;nv=c-'a'+1; sum[p%2] -= ev(p); sum[(p-1)%2] -= ev(p-1); //printf("sum 1 %lld sum 0 %lld\n", sum[1], sum[0]); a[p]=nv; sum[p%2] += ev(p); sum[(p-1)%2] += ev(p-1); for(int l=0;l<2;l++)while(sum[l] < 0)sum[l]+=26; //printf("sum 1 %lld sum 0 %lld\n", sum[1], sum[0]); if(sum[0]%26==0 and sum[1]%26==0)cout<<"da\n"; else cout<<"ne\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...