# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
998140 | cpdreamer | Bliskost (COI23_bliskost) | C++17 | 102 ms | 12024 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include <climits>
#include <ext/pb_ds/assoc_container.hpp>
#include <utility>
using namespace __gnu_pbds;
using namespace std;
typedef tree<int,null_type,less<int>,rb_tree_tag,
tree_order_statistics_node_update> indexed_set;
const int max_n=INT_MAX;
typedef long long ll;
#define LLM LONG_LONG_MAX
#define pb push_back
#define F first
#define P pair
#define L length()
#define all(v) v.begin(),v.end()
#define V vector
#define S second
const long long MOD = 99824433; // 1e9 + 7
void file(){
freopen("input.txt.txt","r",stdin);
freopen("output.txt.txt","w",stdout);
}
void setio(string s) {
freopen((s + ".in").c_str(), "r", stdin);
freopen((s + ".out").c_str(), "w", stdout);
}
struct project{
int start;
int end;
int v;
};
bool sorted(project a,project b){
return a.end<b.end;
}
void check(string s,string t,int n){
for(int i=0;i<n-1;i++){
int index_s=int(s[i])-int('a');
int index_s_1=int(s[i+1])-int('a');
int index_t=int(t[i])-int('a');
int diff=index_t-index_s;
index_s=(index_s+diff+26)%26;
index_s_1=(index_s_1+diff+26)%26;
s[i]=char(int('a')+index_s);
s[i+1]=char(int('a')+index_s_1);
}
if(s[n-1]==t[n-1])
cout<<"da"<<endl;
else
cout<<"ne"<<endl;
}
int char_diff(char a,char b){
int index_a=int(a)-int('a');
int index_b=int(b)-int('a');
int diff=(index_b-index_a+26)%26;
return diff;
}
void solve() {
int n,q;
cin>>n>>q;
string s;
cin>>s;
string t;
cin>>t;
int sign[n];
int value[n];
sign[n-1]=1;
for(int i=n-2;i>=0;i--){
sign[i]=-1*sign[i+1];
}
ll c=0;
for(int i=0;i<n;i++){
value[i]=char_diff(s[i],t[i]);
c+=value[i]*sign[i];
}
c=c%26;
if(c==0)
cout<<"da"<<endl;
else
cout<<"ne"<<endl;
while(q--){
int pos;
char ch;
cin>>pos>>ch;
pos--;
s[pos]=ch;
c-=value[pos]*sign[pos];
value[pos]=char_diff(s[pos],t[pos]);
c+=value[pos]*sign[pos];
if(c==0)
cout<<"da"<<endl;
else
cout<<"ne"<<endl;
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
//file();
solve();
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |